# 运输层服务

运输层协议为运行在不同主机上的应用进程之间提供了逻辑通信(logic communication)功能,即运行在不同主机上的进程之间好像直接连接一样

应用进程通过运输层提供的逻辑通信功能,彼此间收发报文,而无需考虑承载这些报文的物理基础设施的细节

# 运输层与网络层

网络层提供了主机之间的逻辑通信,运输层则提供了不同主机上应用进程间的逻辑通信

  • 发送端系统:运输层将应用层报文划分为较小的块,并为每个块加上一个运输层首部以生成报文段(segment),然后将这些报文段传递给网络层,网络层将其封装成数据报(packet),向目的地发送
  • 接受端系统:网络层从数据报中提取运输层报文段,并将报文段向上交给运输层。运输层则处理接收到的报文段,使报文段中的数据为接收应用进程所使用

注意,网络路由器仅作用于数据报的网络层字段,即不检查封装在数据报内部的报文段的字段

通常,运输层协议所能提供的服务受限于网络层协议所能提供的服务,如网络层如无法提供时延或带宽保证,运输层协议也很难为应用进程提供时延或带宽保证。但是,有时尽管网络层不能提供某种服务,运输层协议也可以通过一些方法提供该服务。如网络层如果无法提供可靠传输服务,运输层协议也能为应用进程提供可靠的数据传输服务

# 多路复用与多路分解

将由网络层提供的主机间的交付服务,拓展到不同主机上运行的进程间的交付服务,被称为运输层的多路复用(multiplex)与多路分解(demultiplex)。运输层实际上并不直接将数据交付给进程,而是将数据交给一个中间的套接字

  • 多路分解:将从网络层收到的运输层报文段,交付到正确的套接字
  • 多路复用:将从不同套接字收集到的数据块,封装成报文段,向下传递给网络层

端口
利用端口号,可以满足运输层多路复用的要求

  • 套接字有唯一标识符
  • 每个报文段有特殊字段指示该报文段所要交付的套接字

端口号是一个 16 bit 的数,大小在 0 - 65535 之间,其中 0 - 1023 范围的端口号为保留端口号,也称周知端口号,保留给诸如 HTTP 和 FTP 等常见应用层协议来使用

Last Updated: 7/1/2020, 2:19:02 AM